5.6 `claude -c -p "query"` - 通过 SDK 继续

4 分钟阅读

claude -c -p "query" 命令结合了会话恢复和打印模式,允许您在继续最近对话的同时执行一次性查询。

命令语法#

bash
claude -c -p "query" [选项]

功能描述#

这个命令结合了两个功能:

  1. -c--continue):加载最近的对话会话
  2. -p--print):通过 SDK 执行查询,然后退出 这允许您:
  • 在之前对话的上下文中执行查询
  • 获取查询结果而不进入交互模式
  • 适合脚本和自动化场景
  • 保持对话的连续性

使用示例#

基本用法#

bash
claude -c -p "检查类型错误"

加载最近的对话,执行类型检查查询,打印结果,然后退出。

代码审查#

bash
claude -c -p "审查最近的代码变更"

在之前对话的上下文中审查最近的代码变更。

测试结果分析#

bash
claude -c -p "分析测试失败的原因"

在之前对话的上下文中分析测试失败的原因。

结合输出格式#

bash
claude -c -p "总结当前进度" --output-format json

以 JSON 格式输出进度总结,便于脚本解析。

指定模型#

bash
claude -c -p "优化性能" --model claude-4-opus

使用指定的模型在之前对话的上下文中优化性能。

使用场景#

1. CI/CD 集成#

bash
# 在 CI/CD 流程中继续之前的对话 claude -c -p "运行测试并分析结果" --output-format json

在 CI/CD 中继续之前的对话,执行测试并分析结果。

2. 定期检查#

bash
# 定期检查项目状态 claude -c -p "检查代码质量" --output-format json

在之前对话的上下文中定期检查代码质量。

3. 自动化报告#

bash
# 生成进度报告 claude -c -p "生成进度报告" --output-format json > report.json

在之前对话的上下文中生成进度报告。

4. 批量任务#

bash
# 执行多个相关任务 claude -c -p "任务1" --output-format json > result1.json claude -c -p "任务2" --output-format json > result2.json claude -c -p "任务3" --output-format json > result3.json

在相同的对话上下文中执行多个相关任务。

上下文保持#

对话历史#

-c 标志会加载完整的对话历史,包括:

  • 之前的查询和响应
  • 代码生成和修改
  • 文件访问记录
  • 工具调用历史

上下文影响#

查询会在之前对话的上下文中执行,这意味着:

  • Claude 会记住之前的讨论
  • 可以引用之前生成的代码
  • 可以继续之前的话题
  • 保持一致的风格和偏好

上下文限制#

需要注意上下文的限制:

  • 上下文长度:对话历史有长度限制,过长的历史可能被截断
  • 上下文相关性:如果查询与之前对话不相关,上下文可能没有帮助
  • 上下文更新:新的查询会更新对话上下文

与其他命令的对比#

命令加载会话进入 REPL输出格式适用场景
claude -c交互式继续交互式工作
claude -c -p可指定脚本和自动化
claude -p可指定独立查询
claude -r "id" -p指定会话可指定精确控制会话

高级用法#

结合多个选项#

bash
claude -c -p "任务" --model opus --output-format json --verbose

使用多个选项精确控制执行。

错误处理#

bash
#!/bin/bash # 执行查询并处理错误 result=$(claude -c -p "任务" --output-format json 2>&1) if [ $? -ne 0 ]; then echo "错误: $result" exit 1 fi echo "$result" | jq '.result'

在脚本中处理可能的错误。

超时控制#

bash
# 设置超时 timeout 60 claude -c -p "长时间任务"

为长时间运行的任务设置超时。

注意事项#

  1. 会话依赖:需要当前目录中有可用的会话
  2. 上下文相关:查询应该与之前对话相关,以充分利用上下文
  3. 输出格式:建议使用 --output-format json 便于脚本解析
  4. 会话更新:查询会更新对话上下文,影响后续的 -c 调用
  5. 资源使用:长时间运行的查询可能占用较多资源

最佳实践#

  1. 上下文相关:确保查询与之前对话相关,充分利用上下文
  2. 明确查询:查询应该明确具体,避免模糊不清
  3. 输出格式:使用合适的输出格式,便于后续处理
  4. 错误处理:在脚本中添加错误处理逻辑
  5. 会话管理:定期清理不需要的会话,避免混淆

常见问题#

Q: 查询会修改会话吗?#

A: 是的,查询会更新对话上下文,影响后续的 -c 调用。

Q: 可以使用其他会话吗?#

A: 不可以,-c 只会加载最近的会话。要使用其他会话,请使用 -r 命令。

Q: 上下文会保留多久?#

A: 上下文会保留在会话文件中,直到会话被删除或覆盖。

Q: 查询失败会影响会话吗?#

A: 查询失败不会修改会话,但会记录错误信息。

相关命令#

  • claude -c:继续最近的对话(进入 REPL)
  • claude -r "id" -p:按 ID 恢复会话并执行查询
  • claude -p:执行独立查询
  • --output-format:指定输出格式

实际应用示例#

自动化工作流#

bash
#!/bin/bash # 每天自动检查项目状态 echo "=== 每日检查 ===" # 检查代码质量 claude -c -p "检查代码质量" --output-format json > quality.json # 检查测试状态 claude -c -p "检查测试状态" --output-format json > tests.json # 生成报告 claude -c -p "生成每日报告" --output-format json > report.json echo "检查完成"

持续集成#

yaml
# GitHub Actions 示例 name: Daily Check on: schedule: - cron: '0 9 * * *' jobs: check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Check Code Quality run: | result=$(claude -c -p "检查代码质量" --output-format json) echo "$result" | jq '.issues' > issues.json

标记本节教程为已读

记录您的学习进度,方便后续查看。